/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sni.org.pe.model;

import java.io.Serializable;
import java.math.BigInteger;
import java.util.Date;
import javax.persistence.*;
import javax.xml.bind.annotation.XmlRootElement;

/**
 *
 * @author Ericson
 */
@Entity
@Table(name = "perfil_opcion_sistema")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "PerfilOpcionSistema.findAll", query = "SELECT p FROM PerfilOpcionSistema p"),
    @NamedQuery(name = "PerfilOpcionSistema.findByIdopsist", query = "SELECT p FROM PerfilOpcionSistema p WHERE p.perfilOpcionSistemaPK.idopsist = :idopsist"),
    @NamedQuery(name = "PerfilOpcionSistema.findByIdperfil", query = "SELECT p FROM PerfilOpcionSistema p WHERE p.perfilOpcionSistemaPK.idperfil = :idperfil"),
    @NamedQuery(name = "PerfilOpcionSistema.findByFechasigperfopsist", query = "SELECT p FROM PerfilOpcionSistema p WHERE p.fechasigperfopsist = :fechasigperfopsist")})
public class PerfilOpcionSistema implements Serializable {
    private static final long serialVersionUID = 1L;
    @EmbeddedId
    protected PerfilOpcionSistemaPK perfilOpcionSistemaPK;
    @Column(name = "fechasigperfopsist")
    @Temporal(TemporalType.DATE)
    private Date fechasigperfopsist;
    @JoinColumn(name = "idperfil", referencedColumnName = "idperfil", insertable = false, updatable = false)
    @ManyToOne(optional = false, fetch = FetchType.EAGER)
    private Perfil perfil;
    @JoinColumn(name = "idopsist", referencedColumnName = "idopsist", insertable = false, updatable = false)
    @ManyToOne(optional = false, fetch = FetchType.EAGER)
    private OpcionSistema opcionSistema;

    public PerfilOpcionSistema() {
    }

    public PerfilOpcionSistema(PerfilOpcionSistemaPK perfilOpcionSistemaPK) {
        this.perfilOpcionSistemaPK = perfilOpcionSistemaPK;
    }

    public PerfilOpcionSistema(BigInteger idopsist, BigInteger idperfil) {
        this.perfilOpcionSistemaPK = new PerfilOpcionSistemaPK(idopsist, idperfil);
    }

    public PerfilOpcionSistemaPK getPerfilOpcionSistemaPK() {
        return perfilOpcionSistemaPK;
    }

    public void setPerfilOpcionSistemaPK(PerfilOpcionSistemaPK perfilOpcionSistemaPK) {
        this.perfilOpcionSistemaPK = perfilOpcionSistemaPK;
    }

    public Date getFechasigperfopsist() {
        return fechasigperfopsist;
    }

    public void setFechasigperfopsist(Date fechasigperfopsist) {
        this.fechasigperfopsist = fechasigperfopsist;
    }

    public Perfil getPerfil() {
        return perfil;
    }

    public void setPerfil(Perfil perfil) {
        this.perfil = perfil;
    }

    public OpcionSistema getOpcionSistema() {
        return opcionSistema;
    }

    public void setOpcionSistema(OpcionSistema opcionSistema) {
        this.opcionSistema = opcionSistema;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (perfilOpcionSistemaPK != null ? perfilOpcionSistemaPK.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof PerfilOpcionSistema)) {
            return false;
        }
        PerfilOpcionSistema other = (PerfilOpcionSistema) object;
        if ((this.perfilOpcionSistemaPK == null && other.perfilOpcionSistemaPK != null) || (this.perfilOpcionSistemaPK != null && !this.perfilOpcionSistemaPK.equals(other.perfilOpcionSistemaPK))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "sni.org.pe.model.PerfilOpcionSistema[ perfilOpcionSistemaPK=" + perfilOpcionSistemaPK + " ]";
    }
    
}
